package com.lld.im.tcp.register;

import com.lld.im.codec.config.BootstrapConfig;
import org.lld.im.common.constant.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author: LunBoWang
 * @description: RegistryZK 类用于注册服务到 ZooKeeper 注册中心。
 * 它实现了 Runnable 接口，用于在独立的线程中执行注册操作。
 * 该类提供了一个构造函数，用于初始化 ZKit、IP 和 TCP 配置。
 * 它还提供了一个 run() 方法，用于执行注册操作。
 * @date: 2025/3/29 下午8:26
 * @version: 1.0
 */

public class RegistryZK implements Runnable{

    private static Logger logger = LoggerFactory.getLogger(RegistryZK.class);

    private Zkit zKit;

    private String ip;

    private BootstrapConfig.TcpConfig tcpConfig;
    public RegistryZK(Zkit zKit, String ip, BootstrapConfig.TcpConfig tcpConfig) {
        this.zKit = zKit;
        this.ip = ip;
        this.tcpConfig = tcpConfig;
    }
    @Override
    public void run() {
        zKit.createRootNode();
        String tcpPath = Constants.ImCoreZkRoot + Constants.ImCoreZkRootTcp + "/" + ip + ":" + tcpConfig.getTcpPort();
        zKit.createNode(tcpPath);
        logger.info("注册tcp服务成功，path：{}", tcpPath);
        String webPath = Constants.ImCoreZkRoot + Constants.ImCoreZkRootWeb + "/" + ip + ":" + tcpConfig.getWebSocketPort();
        zKit.createNode(webPath);
        logger.info("注册web服务成功，path：{}", webPath);
    }
}
